package cn.sz.dzy.io.chat;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

/**
 * @program: io
 * @description:
 * @author: DingZhenYun
 * @create: 2024-05-23 16:13
 **/


/**
 目标：BIO模式下的端口转发思想-服务端实现。

 服务端实现的需求：
 1、注册端口
 2、接收客户端的socket连接，交给一个独立的线程来处理。
 3、把当前连接的客户端socket存入到一个所谓的在线socket集合中保存
 4、接收客户端的消息，然后推送给当前所有在线的socket接收。
 */
public class Server {
    public static List<Socket> allSocketOnLine = new ArrayList<>();

    public static void main(String[] args) throws IOException {
        System.out.println("==服务器的启动==");
        // （1）注册端口
        ServerSocket socket = new ServerSocket(9999);
        while (true){
            //（2）开始在这里暂停等待接收客户端的连接,得到一个端到端的Socket管道
            Socket accept = socket.accept();
            // 把登录的客户端socket存入到一个在线集合中去
            allSocketOnLine.add(accept);
            // 为当前登录成功的socket分配一个独立的线程来处理与之通信
            new ServerReaderThread(accept).start();
        }

    }
}
